/* 公司SSO提供REST服务接口实现单点登录
 *
 * 启用拦截器，判断session是否为空
 *
 * 如果session是空
 *     如果用户通过SSO登陆过
 *         获取本地浏览器中的cookie信息
 *
 * 如果获取不到cookie信息
 *     跳转到login界面，登录成功后通过redireturl跳回
 *
 * 如果获取到了cookie信息
 *     将cookie信息去除并按照格式拼装
 *     调用SSO的REST接口验证
 *     验证成功后，将返回的用户信息放入session中
 */

const express = require('express');
http = require('http');

const app = express();
// 登录拦截器
app.use((req, res, next) => {
  // session 中 user 不存在
  if (!req.session || !req.session.user) {
    checkLogin.checkLogin(req, (err, user) => {
      if (err) {
        next(err.message);
      }
      if (!user) {
        res.redirect(`https://login-beta.huawei.com/login/?redirect=xxxxxx`);
      } else {
        next();
      }
    });
  } else {
    // session 中 user 存在
    console.log(`session[uid] : ${req.session.user.uid}`);
    next();
  }
});

//服务器启动
httpServer = http.createServer(app);

httpServer.listen(3008, function () {
  console.log(`🚀 单点登录启动`);
});
